**************************************************************************************
	;Header frs File-linken

	IFD	Flag_project
Flag_warp	set 1
	ENDC
	IFND	Flag_warp
Flag_warp	set 0
	ENDC
	IFEQ	Flag_warp
Flag_warp	set 1
	include	Nutz_project
	ELSEIF
**************************************************************************************

DIFFICULTY	=	60*40
HUHN_COUNT	=	20

Huhn_Won		EQU	Task_Buffer+$5ee
Warp_ShootCount		EQU	Task_Buffer+$5ef
Huhn_Counter		EQU	Task_Buffer+$5f0
Huhn_Next_Diff		EQU	Task_Buffer+$5f2
Huhn_Hits		EQU	Task_Buffer+$5f4
Huhn_Exit_Color		EQU	Task_Buffer+$5f6
Huhn_Wave_Hold		EQU	Task_Buffer+$5f7
Huhn_Active_Flag	EQU	Task_Buffer+$5f8
Huhn_Still_Active	EQU	Task_Buffer+$5f9
Huhn_AnimSpd		EQU	Task_Buffer+$5fa
Huhn_AnimPtr		EQU	Task_Buffer+$5fc
Warp_Coltab		EQU	Task_Buffer+WorkRam+$600


TEMET_StartX	EQU	70
TEMET_StartY	EQU	90

;--------------------------------------------------------------------------------------------
;-											    -
;-	Zusammenkopieren der Grafiken aus den verschiedenen Welten.			    -
;-											    -
;--------------------------------------------------------------------------------------------
Init_Warpzone:
	move.w	#TEMET_StartX,TEMET_X_Pos(a6)

	lea	Sky_Coltab,a0
	lea	Warp_Coltab,a1

	moveq	#16-1,d7
.set_colors1:
	move.w	(a0)+,(a1)+
	dbf	d7,.set_colors1

	lea	Warp_Coltab_def(pc),a0
	lea	Warp_Coltab+64,a1

	moveq	#32-1,d7
.set_colors2:
	move.w	(a0)+,(a1)+
	dbf	d7,.set_colors2

	bsr	Use_Water
	sf	Huhn_Wave_Hold(a6)
	sf	Huhn_Active_Flag(a6)
	sf	Huhn_Still_Active(a6)
	sf	Huhn_Exit_Color(a6)
	sf	Warp_ShootCount(a6)
	sf	Huhn_Won(a6)

	move.w	#0,Huhn_Hits(a6)
	move.w	#DIFFICULTY,Huhn_Next_Diff(a6)
	clr.w	Huhn_Counter(a6)

	lea	List_Of_GFX(pc),a0
	lea	Warp_EnemyVRam.w,a1
	bra	Rip_Gfx

	;a0 = Zeiger auf Befehls-liste
	;a1 = Base Adress-Zeiger auf VRam

Rip_Gfx:
.next_command:
	cmp.w	#CMD_END,(a0)
	beq	.end
	cmp.w	#CMD_DECRUNCH,(a0)
	beq	.decrunch

	;Grafik ins Videoram laden, an die aktuelle Adresse!

	; Input : a0 = Source-Adress
	;	d0 = Source-Len
	;	a1 = Dest-Adress

	movem.l	d0/a0/a1,-(sp)

	move.w	(a0),d0
	move.l	2(a0),a0
	move.w	4(a0),d1
	and.w	#1023,d1
	mulu	#32,d1
	lea	Scratch_Buffer(a6),a0
	add.l	d1,a0

	jsr	LoadVRam

	movem.l	(sp)+,d0/a0/a1

	adda.w	(a0),a1
	addq.l	#6,a0
	bra	.next_command

.decrunch:
	movem.l	a0/a1,-(sp)
	move.l	2(a0),a0
	lea	Scratch_Buffer(a6),a5
	bsr	Decrunch

	movem.l	(sp)+,a0/a1
	addq.l	#6,a0
	bra	.next_command

.end:
	rts

Use_Tekkno:
	lea	Tekkno_Coltab+32,a0
	bsr	Set_HuhnColor
	move.l	#Tekkno_Huhn_Anim,Huhn_AnimPtr(a6)
	move.w	#2,Huhn_AnimSpd(a6)
	rts

Use_Under:
	lea	Under_Coltab+32,a0
	bsr	Set_HuhnColor
	move.l	#Under_Huhn_Anim,Huhn_AnimPtr(a6)
	move.w	#6,Huhn_AnimSpd(a6)
	rts

Use_Nature:
	lea	Nature_Coltab+32,a0
	bsr	Set_HuhnColor
	move.l	#Nature_Huhn_Anim,Huhn_AnimPtr(a6)
	move.w	#6,Huhn_AnimSpd(a6)
	rts

Use_Inka:
	lea	Inka_Coltab+32,a0
	bsr	Set_HuhnColor
	move.l	#Inka_Huhn_Anim,Huhn_AnimPtr(a6)
	move.w	#6,Huhn_AnimSpd(a6)
	rts

Use_Water:
	lea	Water_Coltab+32,a0
	bsr	Set_HuhnColor
	move.l	#Water_Huhn_Anim,Huhn_AnimPtr(a6)
	move.w	#6,Huhn_AnimSpd(a6)
	rts

Set_HuhnColor:
	lea	Warp_Coltab+32,a1
	lea	Fade_Struktur+Fade_Palette+32(a6),a2
	moveq	#16-1,d7
.set_colors:
	tst.b	Is_Fading(a6)
	bne.s	.no_color
	move.w	(a0),(a2)+
.no_color:
	move.w	(a0)+,(a1)+
	dbf	d7,.set_colors
	rts

Switch_Tekkno_Prg:
	st	Huhn_Wave_Hold(a6)
	tst.b	Huhn_Still_Active(a6)
	bne.s	.hold_on
	bsr	Use_Tekkno
	sf	Huhn_Wave_Hold(a6)		;Nu is es geschehn!
	jmp	Out_Bob
.hold_on:
	rts

Switch_Under_Prg:
	st	Huhn_Wave_Hold(a6)
	tst.b	Huhn_Still_Active(a6)
	bne.s	.hold_on
	bsr	Use_Under
	sf	Huhn_Wave_Hold(a6)		;Nu is es geschehn!
	jmp	Out_Bob
.hold_on:
	rts

Switch_Water_Prg:
	st	Huhn_Wave_Hold(a6)
	tst.b	Huhn_Still_Active(a6)
	bne.s	.hold_on
	bsr	Use_Water
	sf	Huhn_Wave_Hold(a6)		;Nu is es geschehn!
	jmp	Out_Bob
.hold_on:
	rts

Switch_Inka_Prg:
	st	Huhn_Wave_Hold(a6)
	tst.b	Huhn_Still_Active(a6)
	bne.s	.hold_on
	bsr	Use_Inka
	sf	Huhn_Wave_Hold(a6)		;Nu is es geschehn!
	jmp	Out_Bob
.hold_on:
	rts

Switch_Nature_Prg:
	st	Huhn_Wave_Hold(a6)
	tst.b	Huhn_Still_Active(a6)
	bne.s	.hold_on
	bsr	Use_Nature
	sf	Huhn_Wave_Hold(a6)		;Nu is es geschehn!
	jmp	Out_Bob
.hold_on:
	rts

Warp_Coltab_def:
		dc.w	$0000,$0C88,$0ECC,$0846,$000E,$000C,$000A,$0006	;Mr-Nutz
		dc.w	$0000,$0EEE,$0EEE,$0AAA,$0666,$00FF,$009F,$0008

		dc.w	$080E,$0EEE,$0CCC,$0888,$0444,$0000,$00A0,$000E	;Status-Anzeige
		dc.w	$00EA,$0444,$022A,$0006,$0EE0,$0EA0,$0E60,$0C00	;Parallax

CMD_DECRUNCH	EQU	$8000
CMD_END		EQU	$8001


	;Listenaufbau :

	;CMD_DECRUNCH

;	dc.w	CMD_DECRUNCH	;Entpackt das File nach Scratch-Buffer
;	dc.l	GrafikFileName (must be compressed)

	;CMD_END

;	dc.w	CMD_END		;Beendet die Liste


	;CMD_RIP			;Stiehlt eine Grafik.

;	dc.w	Byte-len
;	dc.l	Sigel-Info	;des Original-Files

List_Of_GFX:

	dc.w	CMD_DECRUNCH
	dc.l	Nature_ene_bin_p
	dc.w	22*32
	dc.l	NChick_Obj17
	dc.w	19*32
	dc.l	NChick_Obj18

	dc.w	CMD_DECRUNCH
	dc.l	Under_ene_bin_p
	dc.w	19*32
	dc.l	UChick_Obj0
	dc.w	20*32
	dc.l	UChick_Obj1

	dc.w	CMD_DECRUNCH
	dc.l	Inka_ene_bin_p
	dc.w	19*32
	dc.l	IChick_Obj3
	dc.w	19*32
	dc.l	IChick_Obj4

	dc.w	CMD_DECRUNCH
	dc.l	Tekkno_ene_bin_p

	dc.w	16*32
	dc.l	TChick_Obj0
	dc.w	12*32
	dc.l	TChick_Obj4

	dc.w	CMD_DECRUNCH
	dc.l	Water_ene_bin_p
	dc.w	20*32
	dc.l	WChick_Obj0
	dc.w	20*32
	dc.l	WChick_Obj1

	dc.w	CMD_DECRUNCH
	dc.l	WARP_ene_bin_p

	dc.w	5472
	dc.l	Warp_Obj_0

	dc.w	CMD_END

TEMET_X_Pos	EQU	TEMET_Gravity

TEMET_WarpSupervisor:
	lea	(a6),a2

	bsr	Flight_Control

	move.w	TEMET_X_Pos(a2),d0
	move.w	TEMET_Y_Position(a2),d1
	bne.s	.no_init
	move.w	#TEMET_StartY,d1
	move.w	d1,TEMET_Y_Position(a2)
.no_init:
		add	#128,d0
		sub	Scr_Y_Level_Pos(a6),d1
		add	#128,d1

		move.w	TEMET_Prio(a6),d3

		move.w	TAS_Left_2_Pointer(a6),d2
		move.l	TAS_Left_1_Pointer(a6),a0

		tst	TEMET_Been_HitTimer(a6)
		ble.s	.display
		subq.w	#1,TEMET_Been_HitTimer(a6)
		tst.b	Akt_Copper_Frame(a6)
		bne.s	.display
		moveq	#10,d0
.display:

		bsr	Show_Player_Data

	move.w	TEMET_X_Pos(a6),d0
	add.w	Scr_X_Level_Pos(a6),d0
	move.w	d0,TEMET_X_Position(a6)

	move.w	d0,TEMET_X_Koll_AnfPos(a6)
	move.w	TEMET_Y_Position(a6),TEMET_Y_Koll_AnfPos(a6)
	move.w	#32,TEMET_X_Koll_Width(a6)
	move.w	#20,TEMET_Y_Koll_Height(a6)
	rts

;--------------------------------------------------------------------------------------------
;-											    -
;-	Gegner-routinen									    -
;-											    -
;--------------------------------------------------------------------------------------------
WARP_SHOOT	EQU	40
WARP_HUHN	EQU	41
WARP_WAVE1	EQU	42
WARP_DROP	EQU	43
WARP_POINT	EQU	44

WARP_SWITCH_TEKKNO	EQU	45
WARP_SWITCH_UNDER	EQU	46
WARP_SWITCH_NATURE	EQU	47
WARP_SWITCH_INKA	EQU	48
WARP_SWITCH_WATER	EQU	49

WARP_EXIT1		EQU	50
WARP_EXIT2		EQU	51
WARP_EXIT3		EQU	52
WARP_EXIT4		EQU	53

WARP_WAVE2		EQU	60
WARP_WAVE3		EQU	61
WARP_WAVE4		EQU	62
WARP_WAVE5		EQU	63
WARP_WAVE6		EQU	64
WARP_WAVE7		EQU	65
WARP_WAVE8		EQU	66
WARP_WAVE9		EQU	67
WARP_WAVE10		EQU	68
WARP_WAVE11		EQU	69

WARP_FIRE		EQU	39
WARP_PARTICLE		EQU	38

WFire_Anim:
		dc.w	0
		dc.l	Warp_Obj_6
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_7
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_8
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_9
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_10
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_11
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_12
		dc.w	0,0
		dc.w	END_OUT_DAMAGE
		dc.l	WFire_Anim

HitPoint_Anim:
		dc.w	0
		dc.l	Warp_Obj_13
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	HitPoint_Anim

HitPoint_Flatter_Anim:
		dc.w	0
		dc.l	Warp_Obj_13
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_14
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_15
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_14
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	HitPoint_Flatter_Anim

Shoot_Anim:
		dc.w	0
		dc.l	Warp_Obj_0
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_2
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_1
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Shoot_Anim

Drop_Anim:
		dc.w	0
		dc.l	Warp_Obj_5
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_4
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_3
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_2
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_0
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_2
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_3
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_2
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_3
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_4
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_5
		dc.w	0,0
		dc.w	END_OUT_DAMAGE
		dc.l	Shoot_Anim

Tekkno_Huhn_Anim:
		dc.w	0
		dc.l	THuhn_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	THuhn_Obj_2
		dc.w	0,0
		dc.w	0
		dc.l	THuhn_Obj_3
		dc.w	0,0
		dc.w	0
		dc.l	THuhn_Obj_2
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Tekkno_Huhn_Anim

Under_Huhn_Anim:
		dc.w	0
		dc.l	UHuhn_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	UHuhn_Obj_2
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Under_Huhn_Anim

Nature_Huhn_Anim:
		dc.w	0
		dc.l	NHuhn_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	NHuhn_Obj_2
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Nature_Huhn_Anim

Water_Huhn_Anim:
		dc.w	0
		dc.l	WHuhn_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	WHuhn_Obj_2
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Water_Huhn_Anim

Inka_Huhn_Anim:
		dc.w	0
		dc.l	IHuhn_Obj_1
		dc.w	0,0
		dc.w	0
		dc.l	IHuhn_Obj_2
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Inka_Huhn_Anim

Exit_Anim:
		dc.w	0
		dc.l	Warp_Obj_16
		dc.w	0,0
		dc.w	0
		dc.l	Warp_Obj_17
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Exit_Anim

Warp_HitPointAway:
	jsr	Standart_BobAnim

	jsr	Test_Bob_Out

	moveq	#0,d0
	move.w	Bob_Y_Position(a4),d1
	move.b	Bob_Special_2+1(a4),d0
	add.b	d0,Bob_Special_4(a4)
	move.b	Bob_Special_2(a4),d0
	ext.w	d0
	addx.w	d0,d1
	move.w	d1,Bob_Y_Position(a4)

	add.w	#$0020,Bob_Special_2(a4)

	subq.w	#2,Bob_X_Position(a4)

	moveq	#0,d2
	move.w	#Extras_VRam/32,d3
	move.l	Bob_SigelInfo(a4),a0
	jmp	Show_Simple_Object


	;Bob_Special_2	= Y-Speed
	;Bob_Special_4	= Nachkomma-anteile fr Koordinaten

WHitPoint_Init:
	move.l	#WHitPoint_Rout,Bob_Routine(a4)
	move.w	#HITPOINT,Bob_Number(a4)
	rts

WHitPoint_Rout:
	jsr	Test_TEMET_Hit
	tst.b	Bob_Special_3+1(a4)
	beq.s	.no_flyback
	move.l	#HitPoint_Rout_1,Bob_Routine(a4)
	move.l	#HitPoint_Fall_Anim,Bob_Next_Anim(a4)
	add.w	#12,Bob_X_Position(a4)
	jsr	Get_Next_Bob_Frame
	jmp	HitPoint_Rout_1
.no_flyback:
	jsr	Standart_BobAnim

	tst.b	Bob_Status(a4)
	beq.s	.is_sinking

	sub.w	#$0080,Bob_Special_2(a4)
	cmp.w	#-$0100,Bob_Special_2(a4)
	bge.s	.no_begrenz
	move.w	#-$0100,Bob_Special_2(a4)
.no_begrenz:
	bsr	.ymove_hitpoint

	subq.b	#1,Bob_Status(a4)
	bne.s	.y_move_ready
	move.l	#HitPoint_Anim,Bob_Next_Anim(a4)
	bra.s	.y_move_ready

.is_sinking:
	bsr	.ymove_hitpoint

	add.w	#$0010,Bob_Special_2(a4)
	cmp.w	#$0260,Bob_Special_2(a4)
	blt.s	.y_move_ready

	jsr	Get_Zuffi_d0
	and.w	#3,d0
	addq.w	#1,d0
	asl.w	#4,d0

	move.b	d0,Bob_Status(a4)		;Ab jetzt Flattern.
	move.l	#HitPoint_Flatter_Anim,Bob_Next_Anim(a4)

	jsr	Get_Zuffi_d7
	and.w	#7,d7
	mulu	#48,d7
	move.w	d7,Bob_Special_1(a4)

.y_move_ready:
	moveq	#0,d0
	move.w	Bob_X_Position(a4),d1
	move.b	Bob_Special_1+1(a4),d0
	add.b	d0,Bob_Special_4+1(a4)
	move.b	Bob_Special_1(a4),d0
	ext.w	d0
	addx.w	d0,d1
	move.w	d1,Bob_X_Position(a4)

	jsr	Test_Bob_Out

	moveq	#0,d2
	move.w	#$8000+Warp_EnemyVRam/32+186,d3
	move.l	Bob_SigelInfo(a4),a0
	jmp	Show_Simple_Object

.ymove_hitpoint:
	moveq	#0,d0
	move.w	Bob_Y_Position(a4),d1
	move.b	Bob_Special_2+1(a4),d0
	add.b	d0,Bob_Special_4(a4)
	move.b	Bob_Special_2(a4),d0
	ext.w	d0
	addx.w	d0,d1
	move.w	d1,Bob_Y_Position(a4)
	rts

Huhn_Wave_1:
	addq.w	#1,Bob_Special_4(a4)

	tst.b	Huhn_Wave_Hold(a6)
	beq	.no_hold

	;Wurde von dieser Wave schon mal gestartet ?
	tst.w	Bob_Special_4(a4)
	bne.s	.no_hold

	;Es wurde noch nicht gestartet, warten!
	bra	.NoNewHuhn

.no_hold:
	st	Huhn_Active_Flag(a6)	;Dieses Flag wird gesetzt, solange ein Huhn aktiv ist!
	subq.w	#1,Bob_Anim_Delay(a4)
	bpl	.NoNewHuhn

	st	Bob_Special_4(a4)		;Ab jetzt luft diese Wave!
	st	Huhn_Still_Active(a6)		;Es sind noch welche da!

	moveq	#WARP_HUHN,d0
	move.w	Scr_X_Level_Pos(a6),d1
	add.w	#320,d1
	move.w	Bob_Y_Position(a4),d2
	lea	Area_Enter_Vector(a6),a1
	move.l	a4,-(sp)
	jsr	Search_Bob_Entry
	move.l	a4,a1
	move.l	(sp)+,a4
	move.l	Bob_Next_Anim(a4),a0
	bpl.s	.enter_huhn
	cmp.w	#$8000,4(a0)
	beq.s	.no_huhn
	bra.s	.no_huhn1
.enter_huhn:
	move.l	Huhn_AnimPtr(a6),Bob_Next_Anim(a1)
	move.w	Huhn_AnimSpd(a6),Bob_Anim_Delay_Init(a1)
	move.w	Huhn_Hits(a6),Bob_Hit(a1)

	cmp.w	#$8000,4(a0)
	bne.s	.no_absolute_startpos

	move.w	Scr_X_Level_Pos(a6),d1
	move.w	Scr_Y_Level_Pos(a6),d2
	add.w	6(a0),d1
	add.w	8(a0),d2
	move.w	d1,Bob_X_Position(a1)
	move.w	d2,Bob_Y_Position(a1)
	move.l	(a0),Bob_Special_1(a1)
	clr.w	Bob_Special_3(a1)
.no_huhn:
	move.w	10(a0),Bob_Anim_Delay(a4)
	bmi.s	.out_wave
	addq.l	#6,Bob_Next_Anim(a4)
	bra.s	.no_out
.no_absolute_startpos:

	move.l	(a0),Bob_Special_1(a1)
	clr.w	Bob_Special_3(a1)
.no_huhn1
	move.w	4(a0),Bob_Anim_Delay(a4)
	bpl.s	.no_out
.out_wave:
	move.l	#Out_Me_PLEAZZE,Bob_Routine(a4)
.no_out:
	addq.l	#6,Bob_Next_Anim(a4)
.NoNewHuhn:
	rts

Out_Me_PLEAZZE:
	addq.w	#1,Bob_Special_4(a4)
	cmp.w	#64,Bob_Special_4(a4)
	blt.s	.no_out
	jmp	Out_Bob
.no_out:
	rts

Warp_Huhn_Rout:
	tst.b	Huhn_Won(a6)
	bne.s	.no_test
	jsr	Test_TEMET_Hit
.no_test:
	st	Huhn_Active_Flag(a6)	;Dieses Flag wird gesetzt, solange ein Huhn aktiv ist!
	tst.b	Bob_Special_4(a4)
	beq.s	.no_start_crashing
	move.l	#Crashing_Huhn_Rout,Bob_Routine(a4)
	move.w	#-$200,Bob_Special_2(a4)

	moveq	#15,d0
	jsr	TFMX+16

	move.w	#$0008,Bob_Status(a4)

	bra	Crashing_Huhn_Rout

.no_start_crashing:
	subq.b	#1,Bob_Special_3(a4)
	bpl.s	.no_newdir
	move.l	Bob_Special_1(a4),a0
	move.b	(a0),Bob_Special_3(a4)
	addq.l	#2,Bob_Special_1(a4)
.no_newdir:
	jsr	Standart_BobAnim

	move.l	Bob_Special_1(a4),a0
	moveq	#0,d0
	move.b	-1(a0),d0
	mulu	#4,d0
	lea	Directions_table(pc),a0
	move.w	(a0,d0.w),d1
	add.w	d1,Bob_X_Position(a4)
	move.w	2(a0,d0.w),d1
	add.w	d1,Bob_Y_Position(a4)

	jsr	Test_Bob_Out
	moveq	#0,d2
	move.w	#Warp_EnemyVRam/32,d3
	move.l	Bob_SigelInfo(a4),a0
	jsr	Show_Simple_Object
	rts

Crashing_Huhn_Rout:
	st	Huhn_Active_Flag(a6)	;Dieses Flag wird gesetzt, solange ein Huhn aktiv ist!

	subq.b	#1,Bob_Status(a4)
	bpl.s	.no_fire

	move.l	a4,-(sp)
	moveq	#WARP_FIRE,d0
	move.w	Bob_X_Position(a4),d1
	move.w	Bob_Y_Position(a4),d2
	lea	Area_Enter_Vector(a6),a1
	jsr	Search_Bob_Entry
	bmi.s	.no_entry

	jsr	Get_Zuffi_d0
	and.w	#3,d0
	add.w	d0,d0
	subq.w	#2,d0
	move.w	d0,Bob_Special_1(a4)
.no_entry:
	move.l	(sp)+,a4

	jsr	Get_Zuffi_d0
	and.w	#3,d0
	addq.w	#1,d0
	asl.w	#2,d0
	move.b	d0,Bob_Status(a4)

.no_fire:

	subq.b	#1,Bob_Status+1(a4)
	bpl.s	.no_particle

	move.l	a4,-(sp)
	move.w	Bob_X_Position(a4),d1
	move.w	Bob_Y_Position(a4),d2
	add.w	#16,d1
	add.w	#16,d2
	moveq	#WARP_PARTICLE,d0
	lea	Area_Enter_Vector(a6),a1
	jsr	Search_Bob_Entry
	bmi.s	.no_entry2
	move.w	#-$380,Bob_Special_2(a4)

	jsr	Get_Zuffi_d7
	and.w	#3,d7
	subq.w	#1,d7
	move.w	d7,Bob_Special_4(a4)
.no_entry2:
	move.l	(sp)+,a4

	move.b	#7,Bob_Status+1(a4)

.no_particle:

	jsr	Standart_BobAnim
	moveq	#0,d0
	move.w	Bob_Y_Position(a4),d1
	move.b	Bob_Special_2+1(a4),d0
	add.b	d0,Bob_Special_3(a4)
	move.b	Bob_Special_2(a4),d0
	ext.w	d0
	addx.w	d0,d1
	move.w	d1,Bob_Y_Position(a4)
	add.w	#$30,Bob_Special_2(a4)
	addq.w	#2,Bob_X_Position(a4)
	jsr	Test_Bob_Out

	moveq	#0,d2
	move.w	#Warp_EnemyVRam/32,d3
	move.l	Bob_SigelInfo(a4),a0
	jmp	Show_Simple_Object

WFire_Rout:
	subq.w	#4,Bob_Y_Position(a4)
	move.w	Bob_Special_1(a4),d0
	add.w	d0,Bob_X_Position(a4)

	jsr	Standart_BobAnim
	jsr	Test_Bob_Out
	moveq	#0,d2
	move.w	#$8000+Warp_EnemyVRam/32+186,d3
	move.l	Bob_SigelInfo(a4),a0
	jmp	Show_Simple_Object

POS_ABSOLUTE	EQU	$8000

WaveTable1:
		dcb.w	5		;Header
	dc.l	Mov_konami1
	dc.w	$20
	dc.l	Mov_konami1
	dc.w	$20
	dc.l	Mov_konami1
	dc.w	$20
	dc.l	Mov_konami1
	dc.w	-1

WaveTable2:
		dcb.w	5		;Header
	dc.l	Mov_konami2
	dc.w	$20
	dc.l	Mov_konami2
	dc.w	$20
	dc.l	Mov_konami2
	dc.w	$20
	dc.l	Mov_konami2
	dc.w	-1

WaveTable3:
		dcb.w	5		;Header
	dc.l	Mov_konami3
	dc.w	$20
	dc.l	Mov_konami3
	dc.w	$20
	dc.l	Mov_konami3
	dc.w	$20
	dc.l	Mov_konami3
	dc.w	-1

WaveTable4:
	dcb.w	5		;Header
	dc.l	Mov_harakiri1
	dc.w	$20
	dc.l	Mov_harakiri1
	dc.w	$20
	dc.l	Mov_harakiri1
	dc.w	-1

WaveTable5:
		dcb.w	5		;Header
	dc.l	Mov_strange1
	dc.w	$20
	dc.l	Mov_strange1
	dc.w	$20
	dc.l	Mov_strange1
	dc.w	$20
	dc.l	Mov_strange1
	dc.w	-1

WaveTable6:
		dcb.w	5		;Header
	dc.l	Mov_single
	dc.w	-1

WaveTable7:
		dcb.w	5		;Header
	dc.l	Mov_slope1
	dc.w	POS_ABSOLUTE,320,30
	dc.w	$20
	dc.l	Mov_slope1
	dc.w	POS_ABSOLUTE,320,30
	dc.w	$20
	dc.l	Mov_slope1
	dc.w	POS_ABSOLUTE,320,30
	dc.w	-1

WaveTable8:
		dcb.w	5		;Header
	dc.l	Mov_slope2
	dc.w	POS_ABSOLUTE,320,164
	dc.w	$20
	dc.l	Mov_slope2
	dc.w	POS_ABSOLUTE,320,164
	dc.w	$20
	dc.l	Mov_slope2
	dc.w	POS_ABSOLUTE,320,164
	dc.w	-1

WaveTable9:
		dcb.w	5		;Header
	dc.l	Mov_curve
	dc.w	POS_ABSOLUTE,200,-40
	dc.w	$20
	dc.l	Mov_curve
	dc.w	POS_ABSOLUTE,200,-40
	dc.w	-1

WaveTable10:
		dcb.w	5		;Header
	dc.l	Mov_circle1
	dc.w	$20
	dc.l	Mov_circle1
	dc.w	$20
	dc.l	Mov_circle1
	dc.w	$20
	dc.l	Mov_circle1
	dc.w	-1

WaveTable11:
		dcb.w	5		;Header
	dc.l	Mov_sinus
	dc.w	$18
	dc.l	Mov_cosinus
	dc.w	$18
	dc.l	Mov_sinus
	dc.w	$18
	dc.l	Mov_cosinus
	dc.w	$18
	dc.l	Mov_sinus
	dc.w	$18
	dc.l	Mov_cosinus
	dc.w	$18
	dc.l	Mov_sinus
	dc.w	$18
	dc.l	Mov_cosinus
	dc.w	-1

Mov_konami1:
	dc.b	80,13,25,7,127,13	;Konami 1

Mov_konami2:
	dc.b	80,13,25,3,127,13	;Konami 2

Mov_konami3:
	dc.b	40,13,25,3,40,13,25,3,127,13

Mov_harakiri1:
	dc.b	50,13,12,9,12,8,12,7,12,6,12,5,8,4,6,3,4,2,4,1,4,16,4,15,6,14,127,16+13

Movement_table1
Mov_strange1:
	dc.b	5,13,5,14,10,15,5,14,5,13,5,12,20,11,3,10,3,11,3,12,3,13,3,14,3,15
	dc.b	5,16,20,1,30,13,10,12,8,11,30,10,10,11,127,12

Mov_single:
	dc.b	127,13

Mov_slope1:
	dc.b	25,10,20,11,15,12,127,13+16

Mov_slope2:
	dc.b	25,16,20,15,15,14,127,13+16

Mov_curve:
	dc.b	25,9,25,10,25,11,35,12,127,13

Mov_circle1:
	dc.b	20,13,8,12,8,11,8,10,8,9,8,7,8,6,8,5,8,4,8,3,8,2,8,1,12,16,12,15,12,14,12,13
	dc.b	15,12,15,11,15,12,127,13

Mov_sinus:
	dc.b	8,13,8,14,8,15,8,14,8,13,8,12,8,11,8,12,8,13,8,14,8,15,8,14,127,13

Mov_cosinus:
	dc.b	8,13,8,12,8,11,8,12,8,13,8,14,8,15,8,14,8,13,8,12,8,11,8,12,127,13

Directions_table:
	dc.w	0,0
	dc.w	0,-2
	dc.w	1,-2
	dc.w	2,-2
	dc.w	2,-1
	dc.w	2,0
	dc.w	2,1
	dc.w	2,2
	dc.w	1,2
	dc.w	0,2
	dc.w	-1,2
	dc.w	-2,2
	dc.w	-2,1
	dc.w	-2,0
	dc.w	-2,-1
	dc.w	-2,-2
	dc.w	-1,-2

	dc.w	0,-4
	dc.w	2,-4
	dc.w	4,-4
	dc.w	4,-2
	dc.w	4,0
	dc.w	4,2
	dc.w	4,4
	dc.w	2,4
	dc.w	0,4
	dc.w	-2,4
	dc.w	-4,4
	dc.w	-4,2
	dc.w	-4,0
	dc.w	-4,-2
	dc.w	-4,-4
	dc.w	-2,-4

NHuhn_Obj_1:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+0+$800
	dc.b 0
	dc.b 0
	dc.w $0900
	dc.w CBASE+16+$800
	dc.b 8
	dc.b 32

	dc.w -1

NHuhn_Obj_2:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+22+$800
	dc.b 0
	dc.b 0
	dc.w $0800
	dc.w CBASE+38+$800
	dc.b 8
	dc.b 32
	dc.w -1

UHuhn_Obj_1:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+41
	dc.b 0
	dc.b 0
	dc.w $0800
	dc.w CBASE+57
	dc.b 0
	dc.b 32
	dc.w -1

UHuhn_Obj_2:
	dc.w $a010
	dc.w $0d00
	dc.w CBASE+60
	dc.b 0
	dc.b 0
	dc.w $0e00
	dc.w CBASE+68
	dc.b 0
	dc.b 16
	dc.w -1

IHuhn_Obj_1:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+80+$800
	dc.b 0
	dc.b 0
	dc.w $0800
	dc.w CBASE+96+$800
	dc.b 8
	dc.b 32
	dc.w -1

IHuhn_Obj_2:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+99+$800
	dc.b 0
	dc.b 0
	dc.w $0800
	dc.w CBASE+115+$800
	dc.b 8
	dc.b 32
	dc.w -1

THuhn_Obj_1:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+118
	dc.b 0
	dc.b 0

	dc.w $0400
	dc.w CBASE+134
	dc.b 27
	dc.b 27
	dc.w -1

THuhn_Obj_2:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+118
	dc.b 0
	dc.b 0

	dc.w $0500
	dc.w CBASE+138
	dc.b 27
	dc.b 27
	dc.w -1

WHuhn_Obj_1:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+146
	dc.b 0
	dc.b 0
	dc.w $0C00
	dc.w CBASE+162
	dc.b 0
	dc.b 32
	dc.w -1

WHuhn_Obj_2:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+166
	dc.b 0
	dc.b 0
	dc.w $0C00
	dc.w CBASE+182
	dc.b 0
	dc.b 32
	dc.w -1

THuhn_Obj_3:
	dc.w $a010
	dc.w $0f00
	dc.w CBASE+118
	dc.b 0
	dc.b 0

	dc.w $0500
	dc.w CBASE+142
	dc.b 27
	dc.b 27
	dc.w -1

Warp_Obj_0:
  dc.w $0010+$4000+$8000
  dc.w $0500
  dc.w CBASE+$0000
  dc.b 0
  dc.b 0
  dc.w -1
Warp_Obj_1:
  dc.w $0010+$4000+$8000
  dc.w $0500
  dc.w CBASE+$0004
  dc.b 0
  dc.b 0
  dc.w -1
Warp_Obj_2:
  dc.w $0010+$4000+$8000
  dc.w $0500
  dc.w CBASE+$0008
  dc.b 0
  dc.b 2
  dc.w -1
Warp_Obj_3:
  dc.w $0010+$4000+$8000
  dc.w $0000
  dc.w CBASE+$000C
  dc.b 4
  dc.b 4
  dc.w -1
Warp_Obj_4:
  dc.w $0010+$4000+$8000
  dc.w $0000
  dc.w CBASE+$000D
  dc.b 5
  dc.b 5
  dc.w -1
Warp_Obj_5:
  dc.w $0010+$4000+$8000
  dc.w $0000
  dc.w CBASE+$000E
  dc.b 6
  dc.b 6
  dc.w -1
Warp_Obj_6:
  dc.w $0010+$4000
  dc.w $0700
  dc.w CBASE+$000F
  dc.b 0
  dc.b 6
  dc.w $0700
  dc.w CBASE+$000F+$0800
  dc.b 16
  dc.b 6
  dc.w -1
Warp_Obj_7:
  dc.w $0010+$4000
  dc.w $0700
  dc.w CBASE+$0017
  dc.b 0
  dc.b 2
  dc.w $0400
  dc.w CBASE+$001F
  dc.b 0
  dc.b 34
  dc.w $0700
  dc.w CBASE+$0017+$0800
  dc.b 16
  dc.b 2
  dc.w $0400
  dc.w CBASE+$001F+$0800
  dc.b 16
  dc.b 34
  dc.w -1
Warp_Obj_8:
  dc.w $0010+$4000
  dc.w $0700
  dc.w CBASE+$0021
  dc.b 0
  dc.b 3
  dc.w $0400
  dc.w CBASE+$0029
  dc.b 0
  dc.b 35
  dc.w $0700
  dc.w CBASE+$0021+$0800
  dc.b 16
  dc.b 3
  dc.w $0400
  dc.w CBASE+$0029+$0800
  dc.b 16
  dc.b 35
  dc.w -1
Warp_Obj_9:
  dc.w $0010+$4000
  dc.w $0700
  dc.w CBASE+$002B
  dc.b 0
  dc.b 4
  dc.w $0400
  dc.w CBASE+$0033
  dc.b 0
  dc.b 36
  dc.w $0700
  dc.w CBASE+$002B+$0800
  dc.b 16
  dc.b 4
  dc.w $0400
  dc.w CBASE+$0033+$0800
  dc.b 16
  dc.b 36
  dc.w -1
Warp_Obj_10:
  dc.w $0010+$4000
  dc.w $0700
  dc.w CBASE+$0035
  dc.b 0
  dc.b 3
  dc.w $0400
  dc.w CBASE+$003D
  dc.b 0
  dc.b 35
  dc.w $0700
  dc.w CBASE+$0035+$0800
  dc.b 16
  dc.b 3
  dc.w $0400
  dc.w CBASE+$003D+$0800
  dc.b 16
  dc.b 35
  dc.w -1
Warp_Obj_11:
  dc.w $0010+$4000
  dc.w $0700
  dc.w CBASE+$003F
  dc.b 0
  dc.b 4
  dc.w $0400
  dc.w CBASE+$0047
  dc.b 0
  dc.b 36
  dc.w $0700
  dc.w CBASE+$003F+$0800
  dc.b 16
  dc.b 4
  dc.w $0400
  dc.w CBASE+$0047+$0800
  dc.b 16
  dc.b 36
  dc.w -1
Warp_Obj_12:
  dc.w $0010+$4000
  dc.w $0700
  dc.w CBASE+$0049
  dc.b 0
  dc.b 4
  dc.w $0400
  dc.w CBASE+$0051
  dc.b 0
  dc.b 36
  dc.w $0700
  dc.w CBASE+$0049+$0800
  dc.b 16
  dc.b 4
  dc.w $0400
  dc.w CBASE+$0051+$0800
  dc.b 16
  dc.b 36
  dc.w -1
Warp_Obj_13:
  dc.w $0020+$6000
  dc.w $0D00
  dc.w CBASE+$0053
  dc.b 0
  dc.b 0
  dc.w -1
Warp_Obj_14:
  dc.w $0020+$6000
  dc.w $0D00
  dc.w CBASE+$005B
  dc.b 0
  dc.b 0
  dc.w -1
Warp_Obj_15:
  dc.w $0020+$6000
  dc.w $0D00
  dc.w CBASE+$0063
  dc.b 0
  dc.b 0
  dc.w -1
Warp_Obj_16:
  dc.w $8040
  dc.w $0F00
  dc.w CBASE+$006B
  dc.b 0
  dc.b 0
  dc.w $0F00
  dc.w CBASE+$007B
  dc.b 32
  dc.b 0
  dc.w -1
Warp_Obj_17:
  dc.w $8040
  dc.w $0F00
  dc.w CBASE+$008B
  dc.b 0
  dc.b 0
  dc.w $0F00
  dc.w CBASE+$009B
  dc.b 32
  dc.b 0
  dc.w -1


WShoot_Rout:
	jsr	Standart_BobAnim
	addq.w	#8,Bob_X_Position(a4)
	jsr	Test_Bob_Out

	tst.b	Bob_Special_1+1(a4)
	beq.s	.no_drop_start
	subq.b	#1,Bob_Special_1(a4)
	bpl.s	.no_drop_start
	jsr	Get_Zuffi_d0
	and.b	#15,d0
	move.b	d0,Bob_Special_1(a4)
	subq.b	#1,Bob_Special_1+1(a4)

	move.l	a4,-(sp)
	move.w	Bob_X_Position(a4),d1
	move.w	Bob_Y_Position(a4),d2
	moveq	#WARP_DROP,d0
	lea	Area_Enter_Vector(a6),a1
	jsr	Search_Bob_Entry
	move.l	(sp)+,a4

	moveq	#14,d0
	jsr	TFMX+16

.no_drop_start:

	move.w	Bob_X_Position(a4),d0
	move.w	Bob_Y_Position(a4),d1
	move.w	d0,d2
	move.w	d1,d3
	add.w	#16,d2
	add.w	#16,d3
	sub.w	#32,d0
	sub.w	#20,d1
	jsr	Check_Huhn_Kollision

	moveq	#0,d2
	move.w	#Warp_EnemyVRam/32+186,d3
	move.l	Bob_SigelInfo(a4),a0
	jmp	Show_Simple_Object

Check_Huhn_Kollision:
	lea	Bob_Structure(a6),a0
	move.w	#BOB_MAXIMUM-1,d7
.loop:
	tst.b	Bob_Used(a0)
	bmi.s	.next
	cmp.w	#WARP_HUHN,Bob_Number(a0)
	bne.s	.next

	cmp.w	Bob_X_Position(a0),d0
	bgt.s	.next
	cmp.w	Bob_X_Position(a0),d2
	blt.s	.next

	cmp.w	Bob_Y_Position(a0),d1
	bgt.s	.next
	cmp.w	Bob_Y_Position(a0),d3
	blt.s	.next

	tst.w	Bob_Hit(a0)
	bmi.s	.next				;Das Vieh war schon tot!

	subq.w	#1,Bob_Hit(a0)
	bpl.s	.no_death

	st	Bob_Special_4(a0)		;Getroffen, brennend abstrzen.
	addq.w	#1,Huhn_Counter(a6)
	bra.s	.no_sound
.no_death:
	moveq	#09,d0
	jsr	TFMX+16

.no_sound:
	st	Bob_Used(a4)			;Diesen Bob killen.

	move	#SMOKE_X,d0
	move	Bob_X_Position(a0),d1
	addq.w	#8,d1
	move	Bob_Y_Position(a0),d2
	lea	Area_Enter_Vector(a6),a1
	movem.l	a0/a4,-(sp)
	jsr	Search_Bob_Entry
	movem.l	(sp)+,a0/a4

	rts

.next:
	lea	BOB_ENTRY_LENGTH(a0),a0
	dbf	d7,.loop
	rts

WDrop_Rout:
	jsr	Standart_BobAnim
	moveq	#0,d0
	move.w	Bob_Y_Position(a4),d1
	move.b	Bob_Special_2+1(a4),d0
	add.b	d0,Bob_Special_3(a4)
	move.b	Bob_Special_2(a4),d0
	addx.w	d0,d1
	move.w	d1,Bob_Y_Position(a4)
	add.w	#$30,Bob_Special_2(a4)
	addq.w	#2,Bob_X_Position(a4)
	jsr	Test_Bob_Out

	moveq	#0,d2
	move.w	#Warp_EnemyVRam/32+186,d3
	move.l	Bob_SigelInfo(a4),a0
	jmp	Show_Simple_Object


WParticle_Rout:
	jsr	Standart_BobAnim
	moveq	#0,d0
	move.w	Bob_Y_Position(a4),d1
	move.b	Bob_Special_2+1(a4),d0
	add.b	d0,Bob_Special_3(a4)
	move.b	Bob_Special_2(a4),d0
	ext.w	d0
	addx.w	d0,d1
	move.w	d1,Bob_Y_Position(a4)
	add.w	#$30,Bob_Special_2(a4)
	move.w	Bob_Special_4(a4),d0
	add.w	d0,Bob_X_Position(a4)
	jsr	Test_Bob_Out

	moveq	#0,d2
	move.w	#Warp_EnemyVRam/32+186,d3
	move.l	Bob_SigelInfo(a4),a0
	jmp	Show_Simple_Object

Init_Exit1:
	lea	ExitCols1(pc),a0
	bsr	Set_Exit_Color
	move.l	#Warp_Exit_Rout,Bob_Routine(a4)
	rts

Init_Exit2:
	lea	ExitCols2(pc),a0
	bsr	Set_Exit_Color
	move.l	#Warp_Exit_Rout,Bob_Routine(a4)
	rts

Init_Exit3:
	lea	ExitCols3(pc),a0
	bsr	Set_Exit_Color
	move.l	#Warp_Exit_Rout,Bob_Routine(a4)
	rts

Init_Exit4:
	lea	ExitCols4(pc),a0
	bsr	Set_Exit_Color
	move.l	#Warp_Exit_Rout,Bob_Routine(a4)
	rts

ExitCols1:	dc.w	$04e,$00e,$008,$004
ExitCols2:	dc.w	$4e0,$0e0,$080,$040
ExitCols3:	dc.w	$ea0,$e60,$e00,$800
ExitCols4:	dc.w	$e6e,$e0e,$a0a,$606

Set_Exit_Color:
	lea	Warp_Coltab+18,a1
	lea	Fade_Struktur+Fade_Palette+18(a6),a2
	moveq	#4-1,d7
.set_colors:
	tst.b	Is_Fading(a6)
	bne.s	.no_color
	move.w	(a0),(a2)+
.no_color
	move.w	(a0)+,(a1)+
	dbf	d7,.set_colors
	rts

Warp_Exit_Rout:
	jsr	JoyPad
	and.b	#%1110000,d0
	beq.s	.no_koll

	move.w	Bob_X_Position(a4),d0
	move.w	Bob_Y_Position(a4),d1
	move.w	d0,d2
	move.w	d1,d3
	sub.w	#24,d0
	sub.w	#16,d1
	add.w	#48,d2
	add.w	#16,d3
	cmp.w	TEMET_X_Position(a6),d0
	bgt.s	.no_koll
	cmp.w	TEMET_X_Position(a6),d2
	blt.s	.no_koll
	cmp.w	TEMET_Y_Position(a6),d1
	bgt.s	.no_koll
	cmp.w	TEMET_Y_Position(a6),d3
	blt.s	.no_koll

	move.l	#Warp_Exit_Rout2,Bob_Routine(a4)

	move.w	#90,Bob_Status(a4)

	moveq	#0,d0
	moveq	#0,d1
	jsr	Play_Song
	st	Huhn_Won(a6)


.no_koll:
Show_Exit:
	jsr	Standart_BobAnim

	jsr	Test_Bob_Out

	moveq	#0,d2
	move.w	#Warp_EnemyVRam/32+186,d3
	move.l	Bob_SigelInfo(a4),a0
	jmp	Show_Simple_Object

Warp_Exit_Rout2:
	subq.w	#1,Bob_Status(a4)
	bpl.s	Show_Exit
	move.l	#Show_Exit,Bob_Routine(a4)
	move.l	a4,-(sp)
	move.b	Huhn_Exit_Color(a6),d0
	subq.b	#1,d0
	and.b	#3,d0
	move.b	d0,Message_Custom+1+Message_Struktur
	moveq	#+1,d0				;We survived the whole mess!
	jsr	Quit_Game
	move.l	(sp)+,a4
	bra	Show_Exit
;--------------------------------------------------------------------------------------------
;-											    -
;-	Steuerung und Grenzenabfrage fr den fliegenden/ballernden Nutz.		    -
;-											    -
;--------------------------------------------------------------------------------------------
Flight_Control:
	jsr	JoyPad

	moveq	#0,d7

	btst	#PAD_UP,d0
	beq.s	.no_up
	cmp.w	#10,TEMET_Y_Position(a6)
	blt.s	.no_up
	subq.w	#2,TEMET_Y_Position(a6)
	moveq	#-1,d7				;Wir haben uns bewegt!
.no_up:
	btst	#PAD_DOWN,d0
	beq.s	.no_down
	cmp.w	#224-35,TEMET_Y_Position(a6)
	bgt.s	.no_down
	addq.w	#2,TEMET_Y_Position(a6)
	moveq	#1,d7				;Wir haben uns bewegt!
.no_down:
	tst.w	d7
	beq.s	.clear_counter

	cmp.w	#8,TEMET_Anim_Delay(a6)
	blt.s	.add_it

	tst.w	d7
	bmi.s	.up

	move.l	#Nutz_Obj30,TAS_Left_1_Pointer(a6)
	move.w	#%01,TAS_Left_2_Pointer(a6)
	bra.s	.vertical_done

.up:
	move.l	#Nutz_Obj31,TAS_Left_1_Pointer(a6)
	move.w	#%01,TAS_Left_2_Pointer(a6)
	bra.s	.vertical_done

.add_it:
	addq.w	#1,TEMET_Anim_Delay(a6)
	bra.s	.vertical_done
.clear_counter:
	clr.w	TEMET_Anim_Delay(a6)
	move.l	#Nutz_Obj24,TAS_Left_1_Pointer(a6)
	move.w	#%01,TAS_Left_2_Pointer(a6)

.vertical_done:
	btst	#PAD_LEFT,d0
	beq.s	.no_left
	cmp.w	#20,TEMET_X_Pos(a6)
	blt.s	.no_left
	subq.w	#2,TEMET_X_Pos(a6)
.no_left:
	btst	#PAD_RIGHT,d0
	beq.s	.no_right
	cmp.w	#320-32-20,TEMET_X_Pos(a6)
	bgt.s	.no_right
	addq.w	#2,TEMET_X_Pos(a6)
.no_right:
	tst.b	Warp_ShootCount(a6)
	bne.s	.do_count

	moveq	#PAD_C,d1
	bsr	.fireC
	moveq	#PAD_B,d1
	bsr	.fireC
	moveq	#PAD_A,d1
	bsr	.fireC
	rts

.do_count:
	subq.b	#1,Warp_ShootCount(a6)
	rts

.fireC:
	btst	d1,d0
	beq.s	.no_fire
	bset	d1,button_pressed_flags(a6)
	bne.s	.fire_end
	moveq	#WARP_SHOOT,d0
	move.w	TEMET_X_Pos(a6),d1
	add.w	Scr_X_Level_Pos(a6),d1
	add.w	#8,d1
	move.w	TEMET_Y_Position(a6),d2
	add.w	#8,d2
	lea	Area_Enter_Vector(a6),a1
	jsr	Search_Bob_Entry
	bmi.s	.fire_end
	move.w	#$0603,Bob_Special_1(a4)
	jsr	Get_Zuffi_d0
	and.b	#15,d0
	move.b	d0,Bob_Special_1(a4)
	moveq	#14,d0
	jsr	TFMX+16
	move.b	#6,Warp_ShootCount(a6)
	moveq	#1,d1
	rts

.no_fire:
	bclr	d1,button_pressed_flags(a6)
.fire_end:
	moveq	#0,d1
	rts
;--------------------------------------------------------------------------------------------
;-											    -
;-	Kontrollieren des Parallax zum Wrap-scrollen					    -
;-											    -
;--------------------------------------------------------------------------------------------
MakeWarpPara:
	move.w	#500,Scr_Y_Max(a6)
	move.w	Scr_Y_Level_Pos(a6),-(sp)
	move.w	Scr_X_Level_Pos(a6),-(sp)

	clr.w	Scr_X_Level_Pos(a6)

	move.w	#100,Scr_Y_Level_Pos(a6)

	jsr	MakeSkyPara
	move.w	(sp)+,Scr_X_Level_Pos(a6)
	move.w	(sp)+,Scr_Y_Level_Pos(a6)
	rts

;--------------------------------------------------------------------------------------------
;-											    -
;-	Kontrollieren des Scrollings zum Wrap-scrollen					    -
;-											    -
;--------------------------------------------------------------------------------------------
WarpScroll:
	tst.b	Dont_render_Parallax(a6)
	bne	.no_scrolling
	move.w	#1,Scr_X_Speed(a6)

	move.w	Scr_X_Level_Pos(a6),-(sp)
	and.w	#1023,Scr_X_Level_Pos(a6)
	jsr	Scroll
	move.w	(sp)+,Scr_X_Level_Pos(a6)
	addq.w	#1,Scr_X_Level_Pos(a6)

	and.w	#512*16-1,Scr_X_Level_Pos(a6)
	bne.s	.no_flip

	lea	Bob_Structure(a6),a0
	moveq	#BOB_MAXIMUM-1,d7
.do_them:
	and.w	#512*16-1,Bob_X_Position(a0)
	lea	BOB_ENTRY_LENGTH(a0),a0
	dbf	d7,.do_them

.no_flip:
	sf	Huhn_Still_Active(a6)
	tst.b	Huhn_Active_Flag(a6)
	beq.s	.no_huhn_active
	st	Huhn_Still_Active(a6)		;Es sind noch welche da!
.no_huhn_active:
	sf	Huhn_Active_Flag(a6)

	subq.w	#1,Huhn_Next_Diff(a6)
	bpl.s	.no_step_ahead

	move.w	#DIFFICULTY,Huhn_Next_Diff(a6)
	addq.w	#1,Huhn_Hits(a6)

.no_step_ahead:

	cmp.w	#HUHN_COUNT,Huhn_Counter(a6)
	blt.s	.no_exit
	sub.w	#HUHN_COUNT,Huhn_Counter(a6)

	moveq	#WARP_EXIT1,d0
	add.b	Huhn_Exit_Color(a6),d0
	move.w	Scr_X_Level_Pos(a6),d1
	move.w	Scr_Y_Level_Pos(a6),d2
	add.w	#96,d2
	add.w	#320,d1
	lea	Area_Enter_Vector(a6),a1
	jsr	Search_Bob_Entry

	addq.b	#1,Huhn_Exit_Color(a6)
	and.b	#3,Huhn_Exit_Color(a6)

.no_exit:
.no_scrolling:
	rts

Gem1_Rout_Init:
	move.l	Bob_Entry_Adress(a4),-(sp)
	jsr	Gem1_Rout
	move.l	(sp)+,a0
	tst.b	Bob_Used(a4)
	bmi.s	.restore
	cmp.w	#GEMC1,Bob_Number(a4)
	beq.s	.out
.restore:
	sf	(a0)
.out:
	rts

Gem2_Rout_Init:
	move.l	Bob_Entry_Adress(a4),-(sp)
	jsr	Gem2_Rout
	move.l	(sp)+,a0
	tst.b	Bob_Used(a4)
	bmi.s	.restore
	cmp.w	#GEMC2,Bob_Number(a4)
	beq.s	.out
.restore:
	sf	(a0)
.out:
	rts

;--------------------------------------------------------------------------------------------
;-											    -
;-	Infos der Objekte								    -
;-											    -
;--------------------------------------------------------------------------------------------

Warp_Fire_I:
		dc.l	WFire_Rout
		dc.w	32,16
		dc.l	WFire_Anim
		dc.w	0,3
		dc.b	0,BOB_MID_PRIO

Warp_HitPoint_I:
		dc.l	WHitPoint_Init
		dc.w	32,16
		dc.l	HitPoint_Anim
		dc.w	0,3
		dc.b	0,BOB_MID_PRIO

Warp_Shoot_I:
		dc.l	WShoot_Rout
		dc.w	16,16
		dc.l	Shoot_Anim
		dc.w	0,2
		dc.b	0,BOB_HI_PRIO

Warp_Drop_I:
		dc.l	WDrop_Rout
		dc.w	16,16
		dc.l	Drop_Anim
		dc.w	0,2
		dc.b	0,BOB_MID_PRIO

Warp_Particle_I:
		dc.l	WParticle_Rout
		dc.w	16,16
		dc.l	Drop_Anim
		dc.w	0,2
		dc.b	0,BOB_MID_PRIO

Huhn_I:
		dc.l	Warp_Huhn_Rout
		dc.w	32,32
		dc.l	Tekkno_Huhn_Anim
		dc.w	0,2
		dc.b	0,BOB_MID_PRIO

Wave1_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable1
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave2_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable2
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave3_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable3
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave4_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable4
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave5_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable5
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave6_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable6
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave7_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable7
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave8_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable8
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave9_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable9
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave10_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable10
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Wave11_I:
		dc.l	Huhn_Wave_1
		dc.w	32,32
		dc.l	WaveTable11
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO

Switch_Tekkno_I:
		dc.l	Switch_Tekkno_Prg
		dc.w	32,32
		dc.l	Tekkno_Huhn_Anim
		dc.w	0,0
		dc.b	0,BOB_HI_PRIO
Switch_Under_I:
		dc.l	Switch_Under_Prg
		dc.w	32,32
		dc.l	Under_Huhn_Anim
		dc.w	0,0
		dc.b	0,BOB_HI_PRIO
Switch_Water_I:
		dc.l	Switch_Water_Prg
		dc.w	32,32
		dc.l	Water_Huhn_Anim
		dc.w	0,0
		dc.b	0,BOB_HI_PRIO
Switch_Inka_I:
		dc.l	Switch_Inka_Prg
		dc.w	32,32
		dc.l	Inka_Huhn_Anim
		dc.w	0,0
		dc.b	0,BOB_HI_PRIO
Switch_Nature_I:
		dc.l	Switch_Nature_Prg
		dc.w	32,32
		dc.l	Nature_Huhn_Anim
		dc.w	0,0
		dc.b	0,BOB_HI_PRIO

Exit1_I:
		dc.l	Init_Exit1
		dc.w	32,32
		dc.l	Exit_Anim
		dc.w	0,12
		dc.b	0,BOB_HI_PRIO

Exit2_I:
		dc.l	Init_Exit2
		dc.w	32,32
		dc.l	Exit_Anim
		dc.w	0,12
		dc.b	0,BOB_HI_PRIO

Exit3_I:
		dc.l	Init_Exit3
		dc.w	32,32
		dc.l	Exit_Anim
		dc.w	0,12
		dc.b	0,BOB_HI_PRIO

Exit4_I:
		dc.l	Init_Exit4
		dc.w	32,32
		dc.l	Exit_Anim
		dc.w	0,12
		dc.b	0,BOB_HI_PRIO

Warp_Hitpoint2_I:
		dc.l	Warp_HitPointAway
		dc.w	16,16
		dc.l	HitPoint_Fall_Anim
		dc.w	0,8
		dc.b	0,BOB_HI_PRIO

Warp_I_Gem1:	dc.l	Gem1_Rout_Init
		dc.w	16,16
		dc.l	Gem1_Anim
		dc.w	5,2
		dc.b	0,BOB_MID_PRIO

Warp_I_Gem2:	dc.l	Gem2_Rout_Init
		dc.w	16,16
		dc.l	Gem2_Anim
		dc.w	4,2
		dc.b	0,BOB_MID_PRIO

	ENDC